package com.yuke.cloud.service.cmc.controller.frontend;

import com.yuke.cloud.common.base.dto.LoginAuthDto;
import com.yuke.cloud.common.util.wrapper.WrapMapper;
import com.yuke.cloud.common.util.wrapper.Wrapper;
import com.yuke.cloud.service.cmc.entity.CmsAgreement;
import com.yuke.cloud.service.cmc.service.CmsAgreementService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.http.MediaType;
import com.yuke.cloud.common.core.support.BaseController;
import tk.mybatis.mapper.entity.Example;

import javax.annotation.Resource;
import java.util.List;

/**
 * Created by wg on 2019/01/18.
 */
@Api(value = "WEB - CmsAgreementController", tags = "处理CmsAgreement相关请求", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RestController
@RequestMapping("/cms/agreement")
public class CmsAgreementController extends BaseController {
    @Resource
    private CmsAgreementService cmsAgreementService;

    @PostMapping
    @ApiOperation(httpMethod = "POST", value = "新增一条记录")
    public Wrapper add(@ApiParam(name = "cmsAgreement", value = "该数据记录的POJO") @RequestBody CmsAgreement cmsAgreement) {
        if (cmsAgreement.getAgreementId() == null || cmsAgreement.getAgreementId().toString().equals("")) {
            LoginAuthDto loginAuthDto = getLoginAuthDto();
            cmsAgreement.setUpdateUser(loginAuthDto.getUserId());
            cmsAgreementService.save(cmsAgreement);
        } else {
            LoginAuthDto loginAuthDto = getLoginAuthDto();
            cmsAgreement.setUpdateUser(loginAuthDto.getUserId());
            cmsAgreementService.update(cmsAgreement);
        }
        return WrapMapper.ok(cmsAgreement.getAgreementId());
    }

    @DeleteMapping("/{id}")
    @ApiOperation(httpMethod = "DELETE", value = "根据id删除一条记录")
    public Wrapper delete(@ApiParam(name = "id", value = "记录id") @PathVariable Long id) {
        cmsAgreementService.deleteById(id);
        return WrapMapper.ok();
    }

    @PutMapping
    @ApiOperation(httpMethod = "PUT", value = "修改一条记录")
    public Wrapper update(@ApiParam(name = "cmsAgreement", value = "需要修改的内容") @RequestBody CmsAgreement cmsAgreement) {
        cmsAgreementService.update(cmsAgreement);
        return WrapMapper.ok();
    }

    @GetMapping("/{id}")
    @ApiOperation(httpMethod = "GET", value = "根据ID获取具体信息")
    public Wrapper<CmsAgreement> detail(@ApiParam(name = "id", value = "记录id") @PathVariable Long id) {
        CmsAgreement cmsAgreement = cmsAgreementService.findById(id);
        return WrapMapper.ok(cmsAgreement);
    }

    @GetMapping
    @ApiOperation(httpMethod = "GET", value = "分页获取所有记录")
    public Wrapper<PageInfo<CmsAgreement>> list(@ApiParam(name = "page", value = "分页值", defaultValue = "0") @RequestParam(defaultValue = "0") Integer page,
                                                @ApiParam(name = "size", value = "每分页返回的记录数", defaultValue = "0") @RequestParam(defaultValue = "0") Integer size,
                                                @ApiParam(name = "agreementType", value = "协议类型", defaultValue = "0") @RequestParam(defaultValue = "0") Integer agreementType

    ) {
        PageHelper.startPage(page, size);
        Example example = new Example(CmsAgreement.class);
        Example.Criteria criteria = example.createCriteria();
        criteria.andEqualTo("agreementType", agreementType);
        List<CmsAgreement> list = cmsAgreementService.selectByExample(example);
        PageInfo pageInfo = new PageInfo(list);
        return WrapMapper.ok(pageInfo);
    }
}
